package ru.jkff.jalgebra.data;

/**
 * User: jkff
 * Date: Aug 23, 2009
 * Time: 1:24:08 PM
 */
public interface PureCollection<T, Self extends PureCollection<T, Self>> {
    int size();
    Self with(T t);
    Self without(T t);
    <K extends PureCollection<T, K>> Self withAll(K other);
    <K extends PureCollection<T, K>> Self withoutAll(K other);
}
